package cn.edu.hbpu.controller.v1;

import cn.edu.hbpu.common.R;
import cn.edu.hbpu.dto.CartDto;
import cn.edu.hbpu.dto.GoodsDto;
import cn.edu.hbpu.entity.Cart;
import cn.edu.hbpu.service.CartService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/cart")
public class CartController {

    @Autowired
    private CartService cartService;

    /**
     * 获取某个用户购物车中的商品信息
     */
    @GetMapping("/getCartItems")
    public R<List<CartDto>> getUserCartItems(@RequestParam("userId") String userId) {
        return cartService.getUserCartItems(userId);
    }

    /**
     * 更改某件商品选中状态
     */
    @PutMapping("/changeChecked")
    public R<String> changeChecked(@RequestBody Cart cart) {
        return cartService.changeChecked(cart);
    }

    /**
     * 更改所有商品选中状态
     */
    @PutMapping("/changeAllaChecked")
    public R<String> changeAllChecked(@RequestBody CartDto cartDto) {
        return cartService.changeAllChecked(cartDto);
    }

    /**
     * 删除购物车商品
     *
     * @param cartDto
     * @return
     */
    @DeleteMapping("/deleteCartGoods")
    public R<String> deleteCartGoods(@RequestBody CartDto cartDto) {
        return cartService.deleteCartGoods(cartDto);
    }

    /**
     * 改变购物车商品的数量
     */
    @PutMapping("/updateGoodsAmount")
    public R<String> updateGoodsAmount(@RequestBody Cart cart) {
        return cartService.updateGoodsAmount(cart);
    }

    /**
     * 添加商品到购物车
     * @param goodsDto
     * @return
     */
    @PostMapping("/addGoodsToCart")
    public R<String > addGoodsToCart(@RequestBody GoodsDto goodsDto) {
        return this.cartService.addGoodsToCart(goodsDto);
    }
}
